package com.zs.propertymanage.mapper;

import com.zs.propertymanage.dataObj.GeneralExtra;
import com.zs.propertymanage.dataObj.entity.Manager;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface ManagerMapper {

    /**
     * 获取所有普通管理员列表
     *
     * @return 所有普通管理员列表
     */
    List<Manager> getAllManagerWithPlain();

    /**
     * 根据条件获取所有管理员列表
     *
     * @param search   查询条件
     * @param start    起始位置
     * @param pageSize 分页大小
     * @return 管理员列表
     */
    List<Manager> getAllManagerWithCondition(String search, Integer start, Integer pageSize);

    /**
     * 根据条件获取符合条件的记录总数
     *
     * @param search   查询条件
     * @param start    起始位置
     * @param pageSize 分页大小
     * @return 记录总数
     */
    Integer getCountWithCondition(String search, Integer start, Integer pageSize);

    /**
     * 添加管理员
     *
     * @param manager 管理员对象
     * @return 添加成功返回1，添加失败返回0
     */
    Integer addManager(Manager manager);

    /**
     * 更新管理员信息
     *
     * @param manager 管理员对象
     * @return 更新成功返回1，更新失败返回0
     */
    Integer updateManager(Manager manager);

    /**
     * 根据ID删除管理员
     *
     * @param id 管理员ID
     * @return 删除成功返回1，删除失败返回0
     */
    Integer deleteManagerById(String id);

    /**
     * 获取所有管理员角色列表
     *
     * @return 管理员角色列表
     */
    List<GeneralExtra> getAllManagerRole();

    /**
     * 添加管理员角色
     *
     * @param roleName 角色名
     * @return 添加成功返回1，添加失败返回0
     */
    Integer addManagerRole(String roleName);

    /**
     * 根据ID删除管理员角色
     *
     * @param id 管理员角色ID
     * @return 删除成功返回1，删除失败返回0
     */
    Integer deleteManagerRoleById(Integer id);

    // 根据id获取管理员信息
    Manager getManagerById(String id);

}
